# 本文件用于生成数据概览统计信息
# 功能：分析数据集并返回统计信息、类别分布（柱状图/饼图数据）
# 返回内容说明（JSON格式）：
#   - total_samples: 总样本数 (int)
#   - unique_intents: 分类数量 (int)
#   - avg_length: 平均文本长度 (float)
#   - unique_words: 独特词汇数量（排除停用词）(int)
#   - intent_distribution: 类别分布数据
#       - labels: 类别名称列表 (list)
#       - values: 各类别样本数量列表 (list)
import json
import matplotlib.pyplot as plt
import numpy as np
from collections import Counter
from data_load import load_data,load_stopwords



def get_data_summary(data):
    """生成数据概览统计信息"""
    # 总样本数
    total_samples = len(data)

    # 分类数量
    intents = [item['intent'] for item in data.values()]
    unique_intents = len(set(intents))

    # 平均长度
    texts = [item['text'] for item in data.values()]
    avg_length = round(sum(len(text) for text in texts) / total_samples, 2)

    # 独特词汇数量（排除停用词）
    stopwords = load_stopwords()
    all_words = [word for text in texts for word in text if word not in stopwords]
    unique_words = len(set(all_words))

    # 类别分布
    intent_counts = Counter(intents)
    intent_labels = list(intent_counts.keys())
    intent_values = list(intent_counts.values())

    return {
        "total_samples": total_samples,  # 总样本数
        "unique_intents": unique_intents,  # 分类数量
        "avg_length": avg_length,  # 平均文本长度
        "unique_words": unique_words,  # 独特词汇数量（排除停用词）
        "intent_distribution": {  # 类别分布数据
            "labels": intent_labels,  # 类别名称列表
            "values": intent_values  # 各类别样本数量列表
        }
    }


if __name__ == "__main__":
    # 测试用例
    data = load_data()
    summary = get_data_summary(data)
    print(json.dumps(summary, indent=2, ensure_ascii=False))